pcworld online logo

BALON YARDIM ╓RNE╨▌

╓nceki say²lar²m²zdan birinde balon yard²m olu■turmay² teorik olarak anlatm²■ kod vermeden sadece fikir vermi■tik. Bir kaτ arkada■²m²z balon yard²m olu■turmak iτin gerekli olan kodlar² ²srarla istediler. Biz de sizi k²rm²yor ve ÷rnek program² yay²nl²yoruz. Program² olu■turmak iτin ÷ncelikle iki ayr² form olu■turun. Olu■turaca≡²n²z ikinci form balon yard²m² olu■turacak, bu formun i■levini yerine getirebilmesi iτin Border Style ÷zelli≡ini None yap²n. 1. form'a, ■ekilde g÷rⁿldⁿ≡ⁿ gibi kontrolleri yerle■tirin ve her bir komut butonuna CMD ismini vererek bir Control Array olu■turun. Formlardan bir BAS modⁿlⁿne a■a≡²daki sat²rlar² girin.
Type POINTAPI
        X As Long
        Y As Long
End Type

Public Const SW_SHOWNOACTIVATE = 4
Public Const GW_CHILD = 5
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long,
ByVal yPoint As Long) As Long
Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long,
ByVal nCmdShow As Long) As Long

FORM 1'▌N KODLARI:

General - Declarations
Private Sub DisplayHelp(Help$)
Dim lpPoint As POINTAPI
Dim ret As Integer

If Len(Help$) > 0 Then
frmHelp.Hide
frmHelp.Label1.Caption = Help$ '& "  "
Call GetCursorPos(lpPoint)
frmHelp.Top = (lpPoint.y + 18) * Screen.TwipsPerPixelY
frmHelp.Left = (lpPoint.x - 2) * Screen.TwipsPerPixelY
frmHelp.Width = frmHelp.Label1.Width + (12 * Screen.TwipsPerPixelX)
frmHelp.Height = frmHelp.Label1.Height + (6 * Screen.TwipsPerPixelY)
frmHelp.ZOrder
ret = ShowWindow(frmHelp.hwnd, SW_SHOWNOACTIVATE)

Else
frmHelp.Hide
End If
End Sub

Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
Timer1.Interval = 500
Timer1.Enabled = True
List1.AddItem "Item 1"
List1.AddItem "Item 2"
List1.AddItem "Item 3"
End Sub

Private Sub Timer1_Timer()
Dim curhWnd As Integer
Dim p As POINTAPI
Static LasthWnd As Integer 

If GetActiveWindow() = Form1.hwnd Then  ' Form'un aktif oldu≡undan emin ol
Call GetCursorPos(p)    ' ▌mlecin yerini belirle

' Fare imleci hangi kontrol ⁿzerinde?
curhWnd = WindowFromPoint(p.X, p.Y)

' Ayn² kontrol mⁿ?
' E≡er ayn² kontrol ise tekrar baloncu≡u τizme.

If curhWnd <> LasthWnd Then
LasthWnd = curhWnd   ' ▐imdiki HWnd de≡erini akl²nda tut.
Timer1.Interval = 1  ' Kontrol etme aral²≡²n² dⁿ■ⁿr
Select Case curhWnd
Case cmd(0).hwnd: DisplayHelp (cmd(0).Tag)
Case cmd(1).hwnd: DisplayHelp (cmd(1).Tag)
Case cmd(2).hwnd: DisplayHelp (cmd(2).Tag)
Case cmd(3).hwnd: DisplayHelp (cmd(3).Tag)
Case List1.hwnd:  DisplayHelp (List1.Tag)
Case Text1.hwnd:  DisplayHelp (Text1.Tag)

'E≡er fare imleci kontrolⁿn d²■²na τ²karsa form2'yi gizle
Case frmhelp.hwnd
frmhelp.Hide
Case Else:
DisplayHelp ""
Timer1.Interval = 1000
End Select
End If
End If
End Sub

FORM 2'N▌N KODLARI
Private Sub Form_Load()
Me.Caption = ""
Me.BackColor = &HFFFF&
Label1.Left = 4 * Screen.TwipsPerPixelX
Label1.Top = 20
Tⁿm kodlar² girdikten sonra her kontrolⁿ seτerek TAG ÷zelli≡ine gidin ve g÷rⁿlmesini istedi≡iniz aτ²klamay² yaz²n. Projenizi τal²■t²r²n ve Timer 1'in Interval aral²≡²na g÷re kontrollerin balon yard²mlar²n² g÷steren uygulaman²za bak²n. ▌■te bu kadar.